package top.shiyiri.compare;

import org.junit.Test;

import java.util.Arrays;

/**
 * @author Aunean
 * @date 2022/1/3
 */
/*
一、说明：Java中的对象，正常情况下，只能进行比较：== 或 !=。不能使用 > 或 <
         但是在开发场景中，我们需要对多个对象进行排序，言外之意，就需要比较对象的大小
         如何实现？使用两个接口中的任意一个：Comparable 或 Comparator

二、Comparable接口与Comparator的使用的对比：
        Comparable接口的方式一旦一定，保证Comparable接口实现类的对象在任何位置都可以比较大小
        Comparator接口属于临时性的比较

 */
public class CompareTest {

    /*
    Comparable接口的使用
    1.像 String、包装类实现了 Comparable 接口，重写了 compareTo(obj) 方法
    2.像 String、包装类重写 compareTo() 方法以后，进行了从小到大的排列
    3.重写 compareTo(obj) 的规则：
        如果当前对象this大于形参对象obj，则返回正整数，
        如果当前对象this小于形参对象obj，则返回负整数，
        如果当前对象this等于形参对象obj，则返回零。
    4.对于自定义类来说，如果需要排序，我们可以让自定义类实现 Comparable 接口，重写了 compareTo(obj) 方法
         在 compareTo(obj) 方法中指明如何排序
     */
    @Test
    public void test1() {
        String[] arr = new String[]{"aa", "zz", "cc", "bb", "uu", "ww", "dd", "nn"};
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
    }


    @Test
    public void test2() {
        Goods[] arr = new Goods[5];
        arr[0] = new Goods("联想", 20);
        arr[1] = new Goods("华为", 60);
        arr[2] = new Goods("小米", 10);
        arr[3] = new Goods("戴尔", 40);
        arr[4] = new Goods("微软", 40);
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}
